CC = g++
CFLAGS = -Wall

ifndef build
	build=release
endif

ifeq ($(build),release)
	CFLAGS += -O3 -fomit-frame-pointer -ffast-math
endif

ifeq ($(build),profile)
	CFLAGS += -g3 -pg -fprofile-arcs -ftest-coverage
endif

ifeq ($(build),debug)
	CFLAGS += -g3
endif

%.o: %.cpp
	$(CC) $(CFLAGS) -c $<

all: vplearn vpclassify

debug: 
	make build=debug

profile:
	make build=profile

vplearn: learn.o vp.o parser.o sparse.o
	$(CC) $(CFLAGS) -o vplearn learn.o vp.o parser.o sparse.o 

vpclassify: classify.o vp.o parser.o sparse.o
	$(CC) $(CFLAGS) -o vpclassify classify.o vp.o parser.o sparse.o

learn.o: learn.cpp array.h sparse.h parser.h vp.h
vp.o: vp.cpp vp.h array.h sparse.h
classify.o: classify.cpp array.h sparse.h parser.h vp.h
sparse.o: sparse.cpp array.h sparse.h
parser.o: parser.cpp array.h sparse.h parser.h

clean:
	/bin/rm -f svn-commit* *.o *.gcov *.gcda *.gcno gmon.out vplearn vpclassify
